package com.bigdata.service.domain.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.bigdata.common.annotation.ExcelDictFormat;
import com.bigdata.common.convert.ExcelDictConvert;
import com.bigdata.service.domain.ServiceUsers;
import com.bigdata.service.domain.bo.DatasetFilesBo;
import lombok.Data;
import java.util.Date;

import java.io.Serializable;
import java.util.List;

/**
 * 数据集主视图对象 datasets
 *
 * @author ruoyi
 * @date 2025-07-15
 */
@Data
@ExcelIgnoreUnannotated
public class DatasetsVo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 唯一数据集ID
     */
    @ExcelProperty(value = "唯一数据集ID")
    private String id;

    /**
     * 数据标题（最大200字符）
     */
    @ExcelProperty(value = "数据标题", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "最=大200字符")
    private String title;

    /**
     * 数据摘要描述
     */
    @ExcelProperty(value = "数据摘要描述")
    private String summary;

    /**
     * 数据分类ID
     */
    @ExcelProperty(value = "数据分类ID")
    private String categoryId;

    private String categoryName;

    /**
     * 预览图存储路径（可为空）
     */
    @ExcelProperty(value = "预览图存储路径", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "可=为空")
    private String coverImagePath;


    private Date createTime;

    private String createByName;

    /**
     * 浏览次数
     */
    private Integer hitsValue;
    /**
     * 下载次数
     */
    private Integer downloadValue;


    private List<String> tags;

    private List<DatasetFilesVo> filesBos;

    private ServiceUsersVo publisher;
    /**
     * 创建用户ID
     */
    private Long createUserId;
    /**
     * 数据类型
     */
    private Integer dataTypeId;

    /**
     * 文件数量
     */
    private Integer fileSize;

    private Integer datasetStatus;

    private Integer uploadPointValue;

    private Integer dowPointValue;

    /**
     * 时间范围
     */
    private String timeRange;

    /**
     * 空间范围
     */
    private String spatialExtent;

    /**
     * 发布时间
     */
    private String releaseTime;
    /**
     * 发布状态 1 上架  2 下架
     */
    private Integer listingStatus;

    /**
     * 文件类型
     */
    private String fileType;

    /**
     * 审核上下文
     */
    private String auditContext;
}
